1 A=A+1:IF A=1 THEN LOAD"GDM.OBJ",8,1 2 B=B+1:IF B=1 THEN LOAD"GDM.CODES",8,1 3 : 14 REM ------------------------------ 15 REM - GDM GEOS DISKETTEN MONITOR - 45 REM - (C) MARKT & TECHNIK - 50 REM ------------------------------ 51 : 55 : 60 HE$="-0123456789[193][194][195][196][197][198]" 65 H2$="-0123456789ABCDEF" 75 : 85 CLOSE 15:OPEN 15,8,15,"I":CLOSE 2:OPEN 2,8,2,"#" 90 POKE 53280,0:POKE 53281,0:POKE 53272,23:POKE 657,128:POKE 646,1 91 POKE 53248,32:POKE 53249,219:POKE 53288,1:POKE 53269,1:POKE 52264,0 92 POKE 2040,13 95 : 100 REM --- HAUPTMENUE --- 105 PRINT"[147][199][196][205][160][199]EOS [196]ISKMONITOR [214]2 ";:POKE 53269,1 106 PRINT" BY [212]HORSTEN [208]ETROWSKI (C) 64'ER" 107 PRINT"[184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184]"; 115 PRINT" F1[146] [204]ESEN F2[146] [206]AECHSTER F3[146] SCHREIBEN" 120 PRINT:PRINT" F4[146] [194]YTE EDIT F5[146] [196]IRECTORY F6[146] [210]ESET" 125 PRINT:PRINT" F7[146] [197]NDE F8[146] [194]LOCK EDIT _[146] [196]UMP H[146] [200][197][216]-[197]DIT"; 126 PRINT"[162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162]"; 130 PRINT" [146][211]PUR [ ]  [146] [211]EKTOR [ ] [146]"; 131 PRINT"[184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184]"; 135 PRINT"[184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][145][157] [146]"; 140 PRINT "[194]YTE# :[196][197][218] # [200][197][216] $ [194][201][206] % " 141 PRINT"[176][192][192][192][174] 76543210" 142 PRINT"[221] [221] [211]PRITE" 143 PRINT"[221] [221]" 144 PRINT"[221] [221]" 145 PRINT"[173][192][192][192][189]"; 146 GOSUB 575 150 : 155 : 160 REM --- AUSWAHL MENUE --- 165 MD$="> [215][193][201][212][201][206][199][160]<":GOSUB 2000 166 GET KEY$:IF KEY$="" THEN 165 170 IF KEY$="[133]" THEN GOSUB 590 175 IF KEY$="[135]" THEN PRINT"[147]":GOSUB 460:GOTO 105 176 IF KEY$="H" THEN 1000 180 IF KEY$="[140]" THEN GOSUB 575:GOTO 225 185 IF KEY$="[139]" THEN 85 190 IF KEY$="[134]" THEN GOSUB 650 195 IF KEY$="[136]" THEN CLOSE 2:CLOSE 15:END 200 IF KEY$="[137]" THEN T=PEEK(49664):S=PEEK(49665):KEY$="[133]":GOTO 170 205 IF KEY$="[138]" THEN GOSUB 630 210 IF KEY$="_" THEN GOSUB 340:GOTO 105 215 GOTO 165 220 : 225 REM --- EDITIEREN --- 230 CR=1464+NR:RO=CR 235 X=29:Y=0:GOSUB 675:PRINT"> [197][196][201][212][201][206][199] <" 240 IF NR>255 OR NR<0 THEN NR=NO:CR=RO 245 GOSUB 605 250 POKE RO,PEEK(RO) AND 127 255 POKE CR,PEEK(CR) OR 128 260 RO=CR:NO=NR 265 GET MO$:IF MO$="" THEN 265 270 MO=ASC(MO$):PO=MO 275 IF MO=29 THEN NR=NR+1:CR=CR+1:GOTO 240 280 IF MO=17 THEN NR=NR+40:CR=CR+40:GOTO 240 285 IF MO=138 THEN GOSUB 630:GOTO 240 290 IF MO=145 THEN NR=NR-40:CR=CR-40:GOTO 240 295 IF MO=157 THEN NR=NR-1:CR=CR-1:GOTO 240 300 IF MO=13 THEN POKE RO,PEEK(RO) AND 127:GOTO 150 305 IF MO>=65 AND MO<=90 THEN PO=PO+32:GOTO 315 310 IF MO>=193 AND MO<=218 THEN PO=PO-128 315 Y=INT(NR/40):X=NR-Y*40:Y=Y+11:GOSUB 675:PRINT CHR$(MO); 320 POKE 49664+NR,PO 325 IF NR<255 THEN NR=NR+1:CR=CR+1 330 GOTO 240 335 : 340 REM --- HARDCOPY --- 341 PRINT"[147]":X=0:Y=12:GOSUB 675:PRINT"[196]RUCKER-[196]UMP ...":POKE 53269,0 342 PRINT TAB(10)"([196])EZIMAL" 343 PRINT TAB(10)"([200])EXADEZIMAL" 344 PRINT TAB(10)"([211])[212][207][208][160]!" 345 GET MO$:IF MO$="" THEN 345 346 IF MO$="S" THEN RETURN 347 IF MO$="H" OR MO$="D" THEN 353 348 GOTO 345 353 OPEN 4,4,7:REM MPS-801 GGF.AENDERN 354 POKE768,61:PRINT#4,:CLOSE4:POKE 768,139 355 IF ST<>-128 THEN 359 356 X=5:Y=20:GOSUB675:PRINT"[196][210][213][195][203][197][210][160][206][201][195][200][212][160][193][206][199][197][211][195][200][193][204][212][197][212][160]!-[212]ASTE " 357 FORT=0 TO 255:POKE 53280,T:NEXT:GET A$:IF A$="" THEN 357 358 GOTO 353 359 OPEN 4,4,7:GOSUB 675:PRINT" " 360 FOR OUT =0 TO 31 361 :PRINT#4,"["; 362 :IF MO$="D" THEN PRINT#4,RIGHT$(STR$(OUT*8+1000),3);"] :"; 363 :IF MO$="H" THEN BY=OUT*8:GOSUB 35000:PRINT#4,HI$;"] "; 365 :FOR YB =0 TO 7 369 ::IF MO$="H" THEN BY=PEEK(49664+OUT*8+YB):GOSUB 35000:PRINT#4,HI$; 370 ::IF MO$="D" THEN PRINT#4,RIGHT$(STR$(PEEK(49664+OUT*8+YB)+1000),3); 371 :PRINT#4," "; 375 :NEXT YB 380 :SYS 49259,49664+OUT*8,8,PR$ 385 :PRINT#4,PR$ 390 NEXT OUT 395 PRINT#4:PRINT#4,"[199][196][205] [199]EOS [196]ISK [205]ONITOR VON [212].[208]ETROWSKI ([195]) 64'ER":PRINT#4 400 CLOSE 4:POKE 53269,1:RETURN 405 : 410 REM --- DISK-STATUS --- 415 INPUT#15,EN,ER$,ET,ES:POKE 212,0 420 X=6:Y=24:GOSUB 675:PRINT" "; 425 X=6:Y=24:GOSUB 675:POKE 212,0 430 PRINT"[196]ISK :";ER$;"" 435 RETURN 440 : 445 REM --- STRICH --- 450 PRINT"[192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192]";:RETURN 455 : 460 REM --- DIRECTORY --- 465 CLOSE 1:OPEN 1,8,0,"$0":POKE 53269,0 470 GET#1,A$,A$:D=0:POKE 198,0 475 D=D+1:IF D=2 THEN PRINT:GOSUB 445 480 PRINT:PRINT" ";:IF (ST AND 64)=64 THEN GOTO 500 485 IF PEEK(198)=0 THEN 495 490 POKE 198,0:WAIT 198,1:POKE 198,0 495 SYS 49215:GOTO 475 500 PRINT" --- [212]ASTE DRUECKEN ---":POKE 198,0:WAIT 198,1 505 POKE 53269,1:RETURN 510 : 515 REM --- SPUR/SEKTOR EINGABE --- 520 X=11:Y=9:GOSUB 675:IN=T:GOSUB 700:T=IN 535 X=27:Y=9:GOSUB 675:IN=S:GOSUB 700:S=IN 545 RETURN 550 : 555 REM --- BLOCK LESEN --- 560 POKE 53269,0:PRINT#15,"U1: 2 0 "T;S 565 SYS 49152:NR=0:POKE 53269,1:RETURN 570 : 575 REM --- ANZEIGEN --- 580 X=0:Y=11:GOSUB 675:SYS 49177:POKE 53280,0:RETURN 585 : 590 REM --- LESEN --- 595 GOSUB 515:GOSUB 555:GOSUB 410:GOSUB 575:RETURN 600 : 605 REM --- WERT AUSGEBEN --- 610 X=5:Y=19:GOSUB675:PRINTRIGHT$(STR$(NR+1000),3); 614 POKE 211,14:PRINTRIGHT$(STR$(PEEK(49664+NR)+1000),3); 615 POKE 211,23:PRINTMID$(HEX$,(((PEEK(49664+NR) AND 240)+16)/16)+1,1); 616 PRINTMID$(HEX$,(PEEK(49664+NR)AND 15)+2,1); 617 SYS 49446,NR:POKE 211,31:SYS 49407,PEEK(49664+NR) 620 RETURN 625 : 630 REM --- BYTE EDIT --- 635 GOSUB 605:X=18:Y=22:GOSUB 675:PRINT"[206]EUER [215]ERT:"; 636 OPEN 3,0,0:INPUT#3,BY$:CLOSE 3 637 MO$=LEFT$(BY$,1) 638 IF MO$<>"$" THEN 641 639 IN$=MID$(BY$,2):GOSUB41000 640 BY=IN:GOTO 649 641 IF MO$<>"%" THEN 645 642 BY=0:FOR BI=0 TO 7 643 IF MID$(BY$,9-BI,1)="1" THEN BY=BY+2^BI 644 NEXT BI:GOTO 649 645 IU=1:IF MO$="#" THEN IU=2 646 BY=VAL(MID$(BY$,IU,3)) 649 POKE 49664+NR,BY:GOSUB 575:RETURN 650 REM --- SCHREIBEN --- 655 GOSUB 515:PRINT#15,"B-P 2 0":SYS 49193 660 PRINT#15,"U2: 2 0 ";T;S 665 GOSUB 410:RETURN 670 : 675 REM --- CURSOR SETZEN --- 680 POKE 211,X:POKE 214,Y:SYS 58732:RETURN 690 : 700 REM --- EINGABE (AUCH HEX) 701 IN$=RIGHT$(STR$(IN+1000),2):GOSUB 800 715 IF LEFT$(IN$,1)="$" THEN IN$=RIGHT$(IN$,2):GOSUB 41000:RETURN 716 IN=VAL(IN$) 720 RETURN 800 PRINT IN$; 801 PRINT" [146][157]"; 805 GET A$:IF A$="" THEN 805 810 LL=LEN(IN$):IFA$=CHR$(20) ANDLL>0 THENIN$=LEFT$(IN$,LL-1):PRINT"[157] [157][157]"; 811 IF A$=CHR$(20) THEN 801 812 IF A$=CHR$(13) THEN PRINT" ";:RETURN 815 IF(A$>="0"ANDA$<="9")OR(A$>="A"ANDA$<="F")OR(A$>="[193]"ANDA$<="[198]")THEN 825 816 IF A$="$" THEN 825 820 GOTO 805 825 IF LEN(IN$)<3 THEN IN$=IN$+A$:PRINT A$;:GOTO 801 830 GOTO 805 1000 REM --- HEX EDIT --- 1005 EB=0 1010 X=0:Y=12:GOSUB 675 1011 PRINT" [206]R +0 +1 +2 +3 +4 +5 +6 +7 [193][211][195][201][201] "; 1012 GOSUB 445:PRINT" ";:GOSUB 445 1013 PRINT" + [214]ORW. - [218]UR. [210][197][212][213][210][206][160][197]INGEBEN Q [197]NDE" 1030 X=0:Y=14:GOSUB 675:PRINT"[";:BY=EB:GOSUB 35000:PRINT HI$;"] "; 1035 FORT=0 TO 7:BY=PEEK(49664+EB+T):GOSUB 35000:PRINT HI$" ";:NEXT T 1036 FORT=0 TO 7:PRINTCHR$(PEEK(PEEK(49664+EB+T)+49920));:NEXT 1040 GET K$:IF K$="" THEN 1040 1045 IF K$="Q" THEN GOSUB 575:GOTO 160 1050 OB=EB:IF K$="+" THEN EB=EB+8:IF EB=256 THEN EB=0 1060 IF K$="-" THEN EB=EB-8:IF EB<0 THEN EB=248 1065 IF K$=CHR$(13) THEN 1080 1070 IF OB<>EB THEN 1030 1071 GOTO 1040 1080 PB=1590:OP=1589 1081 X=0:Y=16:GOSUB 675:PRINT" 0-F / 0-[198] [197]INGABE , [210][197][212][213][210][206] = [198]ERTIG "; 1090 POKE OP,PEEK(OP) AND 127 1100 POKE PB,PEEK(PB) OR 128 1120 GET K$:IF K$="" THEN 1120 1125 OP=PB 1130 IF K$="" THEN PB=PB+1 1140 IF K$="[157]" THEN PB=PB-1:GOTO 1179 1145 : 1150 IF K$>="0" AND K$<="9" THEN POKE PB,ASC(K$) OR 128:PB=PB+1 1160 IF K$>="A" AND K$<="F" THEN POKE PB,(ASC(K$)-64) OR 128:PB=PB+1 1170 IF K$>="[193]" AND K$<="[198]"THEN POKE PB,(ASC(K$)-128) OR 128:PB=PB+1 1179 IF ((PB-1589)/3)<>INT((PB-1589)/3) THEN 1185 1180 IF K$="[157]" THEN PB=PB-1:GOTO 1185 1181 PB=PB+1 1185 IF K$=CHR$(13) THEN POKE OP,PEEK(OP) AND 127:GOTO 1220 1190 IF PB>1612 THEN PB=1590 1200 IF PB<1590 THEN PB=1612 1210 GOTO 1090 1220 AD=1589:FOR CN=0 TO 7 1230 GOSUB 30000:POKE (49664+EB+CN),BY 1240 NEXT CN:GOTO 1010 2000 REM --- MODUS ANZEIGEN --- 2010 X=29:Y=0:GOSUB 675:PRINT " ";:GOSUB 675:PRINT MD$:RETURN 30000 REM --- UMRECHNEN HEX-DEZ BILDNIBBLES 30010 BY=0:GOSUB 30020:BY=BY+16*SB:GOSUB 30020:BY=BY+SB:AD=AD+1:RETURN 30020 AD=AD+1:B0=PEEK(AD)AND191:SB=0 30030 IF B0>47 AND B0<58 THEN SB=B0-48:RETURN 30031 IF B0>0 AND B0<8 THEN SB=B0+9:RETURN 30032 IF B0>65 AND B0<71 THEN SB=(B0-65)+9:RETURN 30033 RETURN 35000 REM --- UMRECHNEN DEZ-HEX 35010 HI$="":IN=INT((BY AND 240)/16):GOSUB 35030 35020 IN=(BY AND 15):GOSUB 35030:RETURN 35030 HI$=HI$+MID$(HE$,IN+2,1):RETURN 41000 REM --- UMRECHNEN HEX-DEZ 1 NIBBLE --- 41001 IN=0:I$=MID$(IN$,2,1):GOSUB41010:IN=SB:I$=MID$(IN$,1,1):GOSUB 41010 41002 IN=IN+16*SB:RETURN 41010 SB=0:FOR C=2 TO 17 41020 IF I$=MID$(HEX$,C,1) OR I$=MID$(H2$,C,1) THEN SB=C-2:C=17 41030 NEXT C:RETURN